#include <stdio.h>

/**
 * 
 * 头文件：#include <pthread.h>
 * 线程函数原型
 * int pthread_create(pthread_t *reestrict tidp,
 *                  const pthread_attr_t *restrict aattr,
 *                  void *(*start_routine)(void *)，
 *                  void *restrict arg)
 * 参数一，新的线程的id，如果成功的话返回新线程id到tidp中
 * 参数二，线程属性，（调度策略，继承性，分高性）
 * 参数三，回调函数，新线程要执行的函数，
 * 参数四，回调函数的参数，
 * 
 * 返回值，成功返回0，失败返回对应错误码
 * 
 * 编译时需要连接库，libpthread
 * 
 * 获取进程id： gitpid()
 * 获取线程id： pthread_self()
*/
#include <pthread.h>

viod print_id(char *s){
    pid_t pid;
    pthread_t tid;

    pid = gitpid();
    tid = pthread_self();

    printf("%s pid id %u, tid id 0x%x \n",s,pid,tid);
}

void *thread_fun(void *arg){
    printf_id(arg);
}

int main(){
    printf("fun start\n") ;
    int error ;
    ptherad_t ntid;

    error = pthread_create(&ntid,NULL,thread_fun,"new thread");
    if(error != 0){
        perror("create error = %d\n",error);
        exit(1);
    }

    print_id("main thread:");

    sleep(2) ;

    return 0;
}
